﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using RhythmComet.Physics;

namespace RhythmComet.Utils
{
    public class ScreenHelper
    {
        private static float verticalLimit = 170.0f;//200.0f;
        private static float horizontalLimit = 330.0f;//360.0f;
        private static Vector3 diagonal = PhysicsHelper.NormalizaR3(new Vector3(horizontalLimit, verticalLimit, 0.0f));
        private static Vector3 centerLeftToCenterTop = PhysicsHelper.NormalizaR3(new Vector3(0.0f, verticalLimit, 0.0f) - new Vector3(-horizontalLimit, 0.0f, 0.0f));
        private static Vector3 centerLeftToCenterRight = PhysicsHelper.NormalizaR3(new Vector3(horizontalLimit, 0.0f, 0.0f));

        public static Vector3 CenterLeftToCenterTop
        {
            get { return new Vector3(centerLeftToCenterTop.X, centerLeftToCenterTop.Y, 0.0f); }
        }

        public static Vector3 CenterLeftToCenterBotton
        {
            get { return new Vector3(centerLeftToCenterTop.X, -centerLeftToCenterTop.Y, 0.0f); }
        }

        public static Vector3 CenterRightToCenterTop
        {
            get { return new Vector3(-centerLeftToCenterTop.X, -centerLeftToCenterTop.Y, 0.0f); }
        }

        public static Vector3 CenterRightToCenterBotton
        {
            get { return new Vector3(-centerLeftToCenterTop.X, centerLeftToCenterTop.Y, 0.0f); }
        }

        public static Vector3 CenterLeftToCenterRight
        {
            get { return new Vector3(centerLeftToCenterRight.X, centerLeftToCenterRight.Y, 0.0f); }
        }

        public static Vector3 CenterRightToCenterLeft
        {
            get { return new Vector3(-centerLeftToCenterRight.X, centerLeftToCenterRight.Y, 0.0f); }
        }

        public static float VerticalLimit
        {
            get { return verticalLimit; }
        }

        public static float HorizontalLimit
        {
            get { return horizontalLimit; }
        }

        public static Vector3 TopLeft
        {
            get { return new Vector3(-horizontalLimit, verticalLimit, 0.0f); }
        }

        public static Vector3 TopRight
        {
            get { return new Vector3(horizontalLimit, verticalLimit, 0.0f); }
        }

        public static Vector3 BottomLeft
        {
            get { return new Vector3(-horizontalLimit, -verticalLimit, 0.0f); }
        }

        public static Vector3 BottomRight
        {
            get { return new Vector3(horizontalLimit, -verticalLimit, 0.0f); }
        }

        public static Vector3 CenterLeft
        {
            get { return new Vector3(-horizontalLimit, 0.0f, 0.0f); }
        }

        public static Vector3 CenterRight
        {
            get { return new Vector3(horizontalLimit, 0.0f, 0.0f); }
        }

        public static Vector3 CenterTop
        {
            get { return new Vector3(0.0f, verticalLimit, 0.0f); }
        }

        public static Vector3 CenterBottom
        {
            get { return new Vector3(0.0f, -verticalLimit, 0.0f); }
        }

        public static Vector3 DownRightDiagonal
        {
            get { return new Vector3(diagonal.X, -diagonal.Y, 0.0f); }
        }

        public static Vector3 TopRightDiagonal
        {
            get { return new Vector3(diagonal.X, diagonal.Y, 0.0f); }
        }

        public static Vector3 DownLeftDiagonal
        {
            get { return new Vector3(-diagonal.X, -diagonal.Y, 0.0f); }
        }

        public static Vector3 TopLeftDiagonal
        {
            get { return new Vector3(-diagonal.X, diagonal.Y, 0.0f); }
        }
    }
}
